package com.scau.dto;

import com.scau.handleException.ResultCode;

/**
* @Description: CBECReturn
* @Author: cry
* @Date: 2019/7/31 10:12
* @Version: 1.0.0
*/
public class CBECReturn {
    // 响应业务状态
    private String status;

    // 响应消息
    private String msg;

    // 响应中的数据
    private Object data;

    public CBECReturn() {

    }

    /**
     * 状态码默认值200、提示信息默认值"OK"
     * 只需要传入返回的数据data
     * @param data  需要返回的数据
     */
    public CBECReturn(Object data) {
        this.status = ResultCode.SUCCESS.getStatus();
        this.msg = ResultCode.SUCCESS.getMsg();
        this.data = data;
    }

    /**
     * 创建一个返回值对象，自定义返回的状态码、提示信息、数据
     * @param resultCode 异常枚举类
     * @param data 返回的数据
     */
    public CBECReturn(ResultCode resultCode, Object data) {
        this.status = resultCode.getStatus();
        this.msg = resultCode.getMsg();
        this.data = data;
    }

    /**
     * 静态创建方式
     * 创建一个返回值对象，自定义返回的状态码、提示信息、数据
     * @param resultCode 异常枚举类
     * @param data 返回的数据
     */
    public static CBECReturn build(ResultCode resultCode, Object data) {
        return new CBECReturn(resultCode, data);
    }

    /**
     * 静态创建方式
     * 状态码默认值200、提示信息默认值"OK"
     * 只需要传入返回的数据data
     * @param data 返回的数据
     */
    public static CBECReturn ok(Object data) {
        return new CBECReturn(data);
    }

    /**
     * 静态创建方式
     * 状态码默认值200、提示信息默认值"OK"、data默认值 null
     */
    public static CBECReturn ok() {
        return new CBECReturn(null);
    }

    /**
     * 静态创建方式
     * 创建一个返回值对象，自定义返回的状态码、提示信息
     * 返回值data为null
     * @param resultCode 异常枚举类
     */
    public static CBECReturn build(ResultCode resultCode) {
        return new CBECReturn(resultCode, null);
    }


    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }


}
